package com.speed.controller;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

import com.alibaba.fastjson.JSONObject;
import com.jfinal.aop.Before;
import com.jfinal.core.Controller;
import com.jfinal.ext.interceptor.POST;
import com.jfinal.kit.PathKit;
import com.jfinal.kit.PropKit;
import com.jfinal.kit.StrKit;
import com.speed.entity.Activiter;
import com.speed.service.ActiviterService;
import com.speed.util.SmsFactory;
import com.speed.util.SmsTempData;
import com.speed.util.SmsTemplate;
import com.speed.util.executor.ExecutorUtil;
import com.speed.util.executor.task.QrCodeGenerTask;
import com.speed.util.qc.MatrixToImageWriter;

/**
 * 外部系统调用接口
 *   用于微信报名，调用接口后生成二维码信息
 * @author ZhouChiJian
 *
 */
public class QrCodeController extends Controller {

	private static String DEFAULT_OUT_PATH = PathKit.getWebRootPath() + File.separator + "code" + File.separator;

	@Before(POST.class)
	public void gener() {
		String mobile = getPara("mobile");
		String signCode = getPara("signCode");
		
		//这个参数是用于保护系统的，以防恶意调用，尚未完善保护码调用方式 应采用 可逆向解码
		String code = getPara("code");
		JSONObject json = new JSONObject();
		if (StrKit.isBlank(code) || code.length() != 10) {
			json.put("msg", "参数出错!");
			json.put("code", "1");
			renderJson(json.toJSONString());
			return;
		}
		ExecutorUtil.INSTANCE.run(new QrCodeGenerTask(signCode, mobile, DEFAULT_OUT_PATH + mobile + ".jpg"));
		
		ActiviterService activiterService = enhance(ActiviterService.class);
		Map<String, Object> params = new HashMap<String, Object>();
		params.put(Activiter.SIGN_CODE, signCode);
		Activiter activiter = activiterService.getActiviterByCoditionForOne(params);
		SmsTempData data = new SmsTempData();
		data.setYear("2016");
		data.setMonth("3");
		data.setDay("31");
		data.setActivites("坚朗五金首次公开发行A股上市答谢酒会");
		data.setMobile(mobile);
		data.setName(activiter.getStr(Activiter.ACTIVITER_NAME));
		data.setSignCode(activiter.getStr(Activiter.SIGN_CODE));
		data.setPlacePoint("观澜湖东莞球会国际会议中心3F正阳厅");
		data.setQrUrl(PropKit.get("staticURL") + "/code/" + mobile + ".html");
		SmsFactory.INSTANCE.send(activiter.getStr(Activiter.ACTIVITER_MOBILE), SmsTemplate.temp02(data));
		
		json.put("msg", "正确生成,访问链接即可!");
		json.put("code", "0");
		json.put("linkUrl", getRequest().getRemoteAddr() + "/code" + "/" + mobile + ".jpg");
		renderJson(json.toJSONString());
	}

}
